﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using CajaChica.Entidades;
namespace CajaChica.Clases
{
    class clsAdelantos
    {
        cajaEntities objCajaEntidades;

        public void Guardar(int numero, DateTime fecha, int responsable, decimal montoNumeros,
            string moneda, string montoLetras, string concepto, int solicitante, string area, string cargo,
            string estadoAdelanto, DateTime estadoFecha, int usuario)
        {
            objCajaEntidades = new cajaEntities();
            adelantos adelanto = new adelantos 
            {
                numero = numero,
                fecha = fecha,
                id_responsable = responsable,
                moneda = moneda,
                monto_numeros = montoNumeros,
                monto_letras = montoLetras,
                concepto = concepto,
                id_solicitante = solicitante,
                area = area,
                cargo = cargo,
                estado_adelanto = estadoAdelanto,
                estado_fecha = estadoFecha,
                id_usuario = usuario,
                fecha_registro = DateTime.Now
            };

            objCajaEntidades.AddToadelantos(adelanto);
            objCajaEntidades.SaveChanges();
        }

        public void GuardarCambios(int id, int numero, DateTime fecha, int responsable,
            string moneda, decimal montoNumeros, string montoLetras, string concepto, int solicitante, string area, string cargo,
            string estadoAdelanto, DateTime estadoFecha, int usuario)
        {
            objCajaEntidades = new cajaEntities();
            adelantos adelanto = objCajaEntidades.adelantos.FirstOrDefault(
                a => a.id == id);
            adelanto.numero = numero;
            adelanto.fecha = fecha;
            adelanto.id_responsable = responsable;
            adelanto.moneda = moneda;
            adelanto.monto_numeros = montoNumeros;
            adelanto.moneda = moneda;
            adelanto.monto_letras = montoLetras;
            adelanto.concepto = concepto;
            adelanto.id_solicitante = solicitante;
            adelanto.area = area;
            adelanto.cargo = cargo;
            adelanto.estado_adelanto = estadoAdelanto;
            adelanto.estado_fecha = estadoFecha;
            adelanto.id_usuario = usuario;
            objCajaEntidades.SaveChanges();
        }

        public void Eliminar(int id)
        {
            objCajaEntidades = new cajaEntities();
            adelantos adelanto = objCajaEntidades.adelantos.FirstOrDefault(
                a => a.id == id);
            objCajaEntidades.DeleteObject(adelanto);
            objCajaEntidades.SaveChanges();
        }

        public ArrayList CargarDatosGridView()
        {
            ArrayList lista = new ArrayList();

            objCajaEntidades = new cajaEntities();
            var query = from a in objCajaEntidades.adelantos
                        join s in objCajaEntidades.personas on a.id_solicitante equals s.id
                        join r in objCajaEntidades.personas on a.id_solicitante equals r.id
                        orderby a.numero
                        select new
                        {
                            CODIGO = a.id,
                            NUMERO = a.numero,
                            FECHA = a.fecha,
                            RESPONSABLE = r.rs,
                            MONTO = a.monto_numeros,
                            CONCEPTO = a.concepto,
                            SOLICITANTE = s.rs,
                            ESTADO = a.estado_adelanto
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }
            return lista;
        }

        public ArrayList Buscar(string criterio)
        {
            ArrayList lista = new ArrayList();

            objCajaEntidades = new cajaEntities();
            var query = from a in objCajaEntidades.adelantos
                        join s in objCajaEntidades.personas on a.id_solicitante equals s.id
                        join r in objCajaEntidades.personas on a.id_solicitante equals r.id
                        orderby a.numero
                        where s.rs.Contains(criterio)
                        select new
                        {
                            CODIGO = a.id,
                            NUMERO = a.numero,
                            FECHA = a.fecha,
                            RESPONSABLE = r.rs,
                            MONTO = a.monto_numeros,
                            CONCEPTO = a.concepto,
                            SOLICITANTE = s.rs,
                            ESTADO = a.estado_adelanto
                        };

            foreach (var datos in query)
            {
                lista.Add(datos);
            }
            return lista;
        }
    }
}
